package com.itlaobing.tracing.cookie;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/cookie/produce")
public class CookieProduceServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.log("cookie 测试");

       /* // 通过 set-cookie 字段手动设置 cookie
        response.setHeader("set-cookie","username = wushi");
*/
        // 创建一个表示 cookie 的 Cookie实例
        Cookie cookie = new Cookie("It_Lao_Bing_ID","20201011_19"); //( name:String , value:String )

        //基本方法 设置属性

        //cookie.setDomain("domain");//域

        cookie.setHttpOnly(true);//表示客户端 是否 通过 js 脚本来访问 cookie ，true 不行 ，false 可以
        cookie.setPath("/");// cookiePath
        cookie.setSecure(false);// 是否 采用安全链接时 发送 ， true 采用 ( 影响：不发送，追踪不到，没cookie显示)，false ，不采用
        cookie.setValue("20201011_20");// 修改cookievalue
        int expiry = 60 * 60 * 24 * 365;
        cookie.setMaxAge(expiry);// cookie 过期/满期 的时间 （是以 秒 为单位）

        // 将 cookie 添加到 响应头 的 set-cookie 字段 取值中
        response.addCookie(cookie);

        Cookie cookie2 = new Cookie( "IT_LAO_BING_PASSWD" , "hello666" );
        // 如果某个cookie从未设置  domain 、path 、secure 、httpOnly 、maxAge 等属性，则一律采用默认值
        // 默认的 domain 是 客户端访问 当前servlet时 指定的 域 ，比如 http://localhost:8080/cookie/produce/456 对应的域是 localhost
        // 默认的 path 是 客户端访问 当前servlet时 指定的 路径，比如 http://localhost:8080/cookie/produce/123 对应的 path 是 /cookie/produce
        // 默认的 secure 是 false ，表示无论是否是安全链接，都发送 该cookie
        // 默认的 httpOnly 是 false ，表示在客户端可以通过 JavaScript 等脚本来访问 该cookie
        // 默认的 maxAge 是 -1 ,表示浏览器关闭时就会删除 该cookie
        response.addCookie( cookie2 );

        response.setContentType( "text/html;charset=UTF-8" );
        PrintWriter out = response.getWriter();
        out.println( "<h3>在 Google Chrome 浏览器的地址栏中 输入 chrome://settings/siteData 可以查看 cookie</h3>" );

    }
}
